
let lstImg = {};

/**
 * 这里有两个坐标系,一个是 ISO 一个是笛卡尔 坐标系
 * 但是 这里笛卡尔的坐标系和 参照的坐标系重合.
 * 而ISO坐标系 也是用原视坐标系来表达的.
 *
 * 这里的 点(xInCanvas,yInCanvas) 虽然是坐标在屏幕上的点,相当于是在iso坐标系下,点击到的位置.
 * 要计算出点到了哪一个 tile, 为了方便计算 可以先转换到 笛卡尔坐标系下进行计算.
 * 因为 在 iso 和 笛卡尔 坐标系下 tile索引是 一一对应的.
 *
 * @param xInCanvas
 * @param yInCanvas
 * @return {{x: number, y: number}}
 */
function getTiledIndex(xInCanvas,yInCanvas) {
    let cxy = iso_to_cxy(xInCanvas,yInCanvas);
    let rowIdx = Math.floor( cxy.y / C_Tile_Height );
    let colIdx = Math.floor( cxy.x / C_Tile_Width );
    return {x:rowIdx,y:colIdx};
}

function _getTileImage(tileType) {
    return lstImg[tileType];
}

function loadTiled(tileType,srcUrl) {
    let img = new Image();
    img.src = srcUrl;
    img.onload = function () {
        lstImg[tileType] = img;
        console.log('load tiled success');
    }
}

function iso_to_cxy(ix,iy) {
    let cx = ix / Aspect + iy;
    let cy = iy - ix / Aspect;
    return {x:cx,y:cy};
}

function cxy_to_iso(cx,cy) {
    let ix = Aspect * (cx - cy) / 2;
    let iy = (cx + cy) / 2;
    return {x:ix,y:iy}
}
